我发现Facebook Messenger漏洞可使安卓用户互相监听,获奖6万美元
编译:奇安信代码卫士团队
安卓版 Facebook Messenger 在官方应用商店页面指出,它的安装量已超过10亿台设备。
谷歌 Project Zero (GPZ) 团队的研究员 Natalie Silvanovich 发现了该漏洞,她指出,“Facebook Messenger 通过在接听人和呼叫人之间交换一系列 thrift 信息,在 WebRTC 中设立音频和视频通话。在正常情况下,在目标用户同意接听通话之前,接听设备不会传输音频:当接听人点击接受按钮后,才会调用 setLocalDescription;或者将本地 SDP 中的音频和视频媒体描述设置为禁用,当目标用户点击按钮时更新(具体策略根据接听人在 Facebook 上登录的端点数量决定)。然而,有一种消息类型并不用于通话设置,它就是 SdpUpdate,会导致setLocalDescription 立即被调用。如果在接听人设备还在响的过程中将信息发送给该设备,那么就会立即开始传输音频,使攻击者监控接听设备的周遭环境。”
上个月,Silvanovich发现了这个问题。她还提供了 Python PoC exploit 代码复现该问题。
复现步骤如下:
(1) 登录攻击者设备上的 Facebook Messenger
(2) 登录目标设备上的 Facebook Messenger。同时从浏览器登录到同一账户的 Facebook(保证呼叫设置使用延迟呼叫来设置 setLocalDescription 策略。本 PoC 不适用于其它策略)。
(3) 在攻击者设备上安装 Frida,运行 Frida 服务器。
(4) 通过攻击者设备向任意设备呼叫,加载 RTC 库,与 Frida hook。
(5) 解压 sdp_update,在本地文件夹中运行:
python2 modifyout.py "attacker device name"
(要获取设备清单,运行 python2 modifyout.py)
(6) 向目标设备呼出音频通话。
几秒后,即可通过攻击者设备的扬声器听到目标设备的音频。
PoC 执行如下步骤:
(1) 等待接听发送,保存其中的 sdp Thrift 字段
(2) 将含有该 sdpThrift 的 SdpUpdate 信息发送给目标
(3) 向攻击者发送虚假的 SdpAnswer 信息,使设备认为通话已被接听并播放进入的音频.
Facebook 解释称,该 bug “本可导致攻击者登录安卓版 Messenger,同时发起通话并向已登录用户和另外一个 Messenger 客户端(Web 浏览器)发送非预期的信息。
随后它将触发一个场景:当设备响起时,呼叫者将开始接受音频,直到被呼叫者接听后或者呼叫过程结束后停止。要利用该漏洞,攻击者必须能够绕过某些合法性检查(如为 Facebook 好友)有权限呼叫某个特定的用户。同时需要使用逆向工具操纵自己的 Messenger 应用,强制应用发送自定义信息。“
修复漏洞后,Facebook 公司的安全研究员还在使用一对一呼叫相同协议的其它 app 上应用了其它防护措施。
Facebook 为该漏洞颁发6万美元的奖金,并指出这笔奖金是 Facebook 公司颁发的最高的三项奖金之一,这反映了它的最大潜在影响。
Silvanovich 指出将把这笔奖金捐献给 GiveWell Maximum Impact Fund。Facebook 公司的产品安全经理 Collin Greene 随后表示,Facebook 将追加同等数额的捐献,即该机构将共获得12万美元的捐赠。
从2011年到现在,加入 Facebook 漏洞奖励计划的安全研究员超过5万名,其中约6900名研究员获得奖金,共发现超过13万个漏洞。Facebook 公司表示,单在今年就向来自50多个国家的安全研究员颁发了超过198万美元的奖金,涉及1000个漏洞。
算捡漏么?我发现了一个值2万美金的 Facebook DOM XSS 漏洞
https://www.bleepingcomputer.com/news/security/facebook-messenger-bug-allowed-android-users-to-spy-on-each-other/
https://bugs.chromium.org/p/project-zero/issues/detail?id=2098
题图:Pixabay License
本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的
产品线。